/******************************************************
* 文    件：iic.h
* 版    本：V2.0
* 环    境：IAR for Atmel 6.70.1
* 芯    片：ATmega系列单片机
* 时    间：2016年4月29日
* 参    考：ST公司STM32固件库及网上资源的总结
* 公    司：彪彪电子(www.aabiao.top)
* 作    者：付瑞彪(Tom Free)
*******************************************************/

#ifndef IIC_H_
#define IIC_H_

#include "typedef.h"
#include "config.h"

//定义应答和非应答常量
#define ACK 	1
#define NACK	0

//iic常用寄存器位定义
#define TWPS0	0
#define TWPS1	1
#define TWEN	2
#define TWIE	0
#define TWEA	6
#define TWINT	7
#define TWSTA	5
#define TWSTO	4

//常用状态定义
#define TW_START            0x08        // Master 
#define TW_REP_START        0x10 
#define TW_MT_SLA_ACK       0x18        // Master Transmitter  
#define TW_MT_SLA_NACK      0x20 
#define TW_MT_DATA_ACK      0x28 
#define TW_MT_DATA_NACK     0x30 
#define TW_MT_ARB_LOST      0x38 
#define TW_MR_ARB_LOST      0x38        // Master Receiver 
#define TW_MR_SLA_ACK       0x40 
#define TW_MR_SLA_NACK      0x48 
#define TW_MR_DATA_ACK      0x50 
#define TW_MR_DATA_NACK     0x58 

/* 用户可以在以下定义中加入你所使用的单片机型号 */
#if (CHIP_TYPE == 8)
	#define SDA		PC,4
	#define SCL		PC,5
#elif (CHIP_TYPE == 48)
 	#define SDA		PC,4
	#define SCL		PC,5
#elif (CHIP_TYPE == 88)
 	#define SDA		PC,4
	#define SCL		PC,5
#elif (CHIP_TYPE == 168)
 	#define SDA		PC,4
	#define SCL		PC,5
#elif (CHIP_TYPE == 328)
 	#define SDA		PC,4
	#define SCL		PC,5
#elif (CHIP_TYPE == 16)
 	#define SDA		PC,1
	#define SCL		PC,0
#elif (CHIP_TYPE == 32)
 	#define SDA		PC,1
	#define SCL		PC,0
#elif (CHIP_TYPE == 64)
 	#define SDA		PD,1
	#define SCL		PD,0
#elif (CHIP_TYPE == 128)
 	#define SDA		PD,1
	#define SCL		PD,0
//Add your MCU type here!
//#elif (CHIP_TYPE == xxx)
//#define SDA
//#define SCL
#endif

void IIC_Init();
void IIC_Start();
void IIC_Stop();
uint8 IIC_WriteByte(uint8 data);
uint8 IIC_ReadByte(uint8 ack);

#endif